package com.gpframework.module.order.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.gpframework.common.core.domain.AjaxResult;
import com.gpframework.module.order.domain.GpOrder;
import com.gpframework.module.order.domain.req.GpOrderAdd;
import com.gpframework.module.order.domain.req.GpOrderReq;
import com.gpframework.module.order.domain.req.GpOrderUpdateMy;
import com.gpframework.module.order.domain.vo.GpHomeStatisticsVo;
import com.gpframework.module.order.domain.vo.GpOrderVo;

import java.util.List;
/**
 * @ClassName GpOrder
 * @Author gpframework
 * @Date 2023-06-16
 * @Version 1.0.0
 * @Description 销售单Service接口
 */
public interface IGpOrderService extends IService<GpOrder> {

    /**
     * @Description 查询列表返回VO 用于返回给前端的列表接口
     * @Author gpframework
     * @Date 2023-06-16
     * @Param [lqw]
     * @Return List<GpOrderVo>
     */
    List<GpOrderVo> listVo(QueryWrapper<GpOrder> lqw);

    /**
     * @Description 查询列表返回VO 用于返回给前端的列表接口
     * @Author gpframework
     * @Date 2023-06-16
     * @Param [lqw]
     * @Return List<GpOrderVo>
     */
    List<GpOrderVo> listVo(GpOrderReq gpOrderReq);



    List<GpOrderVo> listVoHistory(QueryWrapper<GpOrder> lqw);

    /**
     * @Description 通过查询详情VO 用于返回给前端的列详情接口
     * @Author gpframework
     * @Date 2023-06-16
     * @Param [id]
     * @Return GpOrderVo
     */
    GpOrderVo getVoById(Long id);

    AjaxResult collection(GpOrderAdd orderAdd);

    GpHomeStatisticsVo homeStatistics(QueryWrapper<GpOrder> lqw);

    GpHomeStatisticsVo todayHomeStatistics(QueryWrapper<GpOrder> lqw);

    List<GpOrderVo> overdueOrderList(GpOrderReq gpOrderReq);

    List<GpOrderVo> largeScreenList(String orderStatus);

    int getCount(QueryWrapper<GpOrder> queryWrapper);

    boolean outOfStock(GpOrderUpdateMy gpOrderUpdate);

    int getCountHistory(QueryWrapper<GpOrder> todayPendingProcessingLqw);
}
